package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.organization.RCEnterprise;
import com.shrct.businessprocess.project.RCCustomerContract;
import com.shrct.businessprocess.project.RCProject;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.project.RCRealMoney;
import com.shrct.businessprocess.purchase.RCGeneralInvoiceType;
import com.shrct.businessprocess.purchase.RCInvoiceAccountInfo;
import com.shrct.businessprocess.purchase.RCInvoiceCondition;
import com.shrct.businessprocess.purchase.RCInvoiceType;
import com.shrct.businessprocess.purchase.RCPurchaseIncomeProcess;
import com.shrct.businessprocess.purchase.RCPurchaseInvoiceItem;
import com.shrct.businessprocess.purchase.impl.RCPurchaseIncomeRequestImpl;
import com.shrct.businessprocess.purchase.proxy.RCPurchaseIncomeRequestProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCPurchaseIncomeRequestImpl.class)
public interface RCPurchaseIncomeRequest extends IModelObject {
  public abstract RCProject getProject();
  
  public abstract RCPurchaseIncomeRequest setProject(final RCProject project);
  
  public abstract RCCustomerContract getCustomerContract();
  
  public abstract RCPurchaseIncomeRequest setCustomerContract(final RCCustomerContract customerContract);
  
  public abstract String getInvoiceTitle();
  
  public abstract RCPurchaseIncomeRequest setInvoiceTitle(final String invoiceTitle);
  
  public abstract String getContent();
  
  public abstract RCPurchaseIncomeRequest setContent(final String content);
  
  public abstract String getComment();
  
  public abstract RCPurchaseIncomeRequest setComment(final String comment);
  
  public abstract RCProjectMoney getAmount();
  
  public abstract RCPurchaseIncomeRequest setAmount(final RCProjectMoney amount);
  
  public abstract String getInvoiceNumber();
  
  public abstract RCPurchaseIncomeRequest setInvoiceNumber(final String invoiceNumber);
  
  public abstract Date getPassDate();
  
  public abstract RCPurchaseIncomeRequest setPassDate(final Date passDate);
  
  public abstract Boolean getIsPassed();
  
  public abstract RCPurchaseIncomeRequest setIsPassed(final Boolean isPassed);
  
  public abstract RCInvoiceAccountInfo getCustomerInvoiceAccountInfo();
  
  public abstract RCPurchaseIncomeRequest setCustomerInvoiceAccountInfo(final RCInvoiceAccountInfo customerInvoiceAccountInfo);
  
  public abstract RCInvoiceAccountInfo getCompanyInvoiceAccountInfo();
  
  public abstract RCPurchaseIncomeRequest setCompanyInvoiceAccountInfo(final RCInvoiceAccountInfo companyInvoiceAccountInfo);
  
  public abstract RCGeneralInvoiceType getGeneralInvoiceType();
  
  public abstract RCPurchaseIncomeRequest setGeneralInvoiceType(final RCGeneralInvoiceType generalInvoiceType);
  
  public abstract Collection<RCInvoiceType> getInvoiceType();
  
  public abstract RCPurchaseIncomeRequest setInvoiceType(final Iterable<RCInvoiceType> invoiceType);
  
  public abstract RCPurchaseIncomeRequest addtoInvoiceType(final RCInvoiceType rCInvoiceType);
  
  public abstract RCPurchaseIncomeRequest removeAllInvoiceType();
  
  public abstract RCPurchaseIncomeRequest removeFromInvoiceType(final RCInvoiceType rCInvoiceType);
  
  public abstract Collection<RCInvoiceCondition> getInvoiceCondition();
  
  public abstract RCPurchaseIncomeRequest setInvoiceCondition(final Iterable<RCInvoiceCondition> invoiceCondition);
  
  public abstract RCPurchaseIncomeRequest addtoInvoiceCondition(final RCInvoiceCondition rCInvoiceCondition);
  
  public abstract RCPurchaseIncomeRequest removeAllInvoiceCondition();
  
  public abstract RCPurchaseIncomeRequest removeFromInvoiceCondition(final RCInvoiceCondition rCInvoiceCondition);
  
  public abstract String getInvoiceMailAddress();
  
  public abstract RCPurchaseIncomeRequest setInvoiceMailAddress(final String invoiceMailAddress);
  
  public abstract String getInvoiceMailName();
  
  public abstract RCPurchaseIncomeRequest setInvoiceMailName(final String invoiceMailName);
  
  public abstract String getReceiver();
  
  public abstract RCPurchaseIncomeRequest setReceiver(final String receiver);
  
  public abstract String getPostCode();
  
  public abstract RCPurchaseIncomeRequest setPostCode(final String postCode);
  
  public abstract String getPhone();
  
  public abstract RCPurchaseIncomeRequest setPhone(final String phone);
  
  public abstract Collection<RCPurchaseInvoiceItem> getItems();
  
  public abstract RCPurchaseInvoiceItem createAndAddtoItems();
  
  public abstract RCPurchaseInvoiceItem createAndAddtoItems(final Procedure1<RCPurchaseInvoiceItem> updater);
  
  public abstract RCPurchaseIncomeRequest removeFromItems(final RCPurchaseInvoiceItem rCPurchaseInvoiceItem);
  
  public abstract RCPurchaseIncomeRequest removeAllItems();
  
  public abstract Boolean isCanceled();
  
  public abstract Boolean getAllPaid();
  
  public abstract Double getActualIncome();
  
  public abstract Double getActualTax();
  
  public abstract RCEnterprise getCustomer();
  
  public abstract Double getRemainAmount();
  
  public abstract RCRealMoney getTotalAssignedAmount();
  
  public abstract RCPurchaseIncomeProcess getProcess();
  
  public abstract RCPurchaseIncomeRequestProxy toProxy();
}
